58 research outputs found
A Framework for Agile Development of Component-Based Applications
Agile development processes and component-based software architectures are
two software engineering approaches that contribute to enable the rapid
building and evolution of applications. Nevertheless, few approaches have
proposed a framework to combine agile and component-based development, allowing
an application to be tested throughout the entire development cycle. To address
this problematic, we have built CALICO, a model-based framework that allows
applications to be safely developed in an iterative and incremental manner. The
CALICO approach relies on the synchronization of a model view, which specifies
the application properties, and a runtime view, which contains the application
in its execution context. Tests on the application specifications that require
values only known at runtime, are automatically integrated by CALICO into the
running application, and the captured needed values are reified at execution
time to resume the tests and inform the architect of potential problems. Any
modification at the model level that does not introduce new errors is
automatically propagated to the running system, allowing the safe evolution of
the application. In this paper, we illustrate the CALICO development process
with a concrete example and provide information on the current implementation
of our framework
Contrôle de la fiabilité des logiciels à évoluer : un canevas pour le développement incrémental et itératif de logiciels à composants et orientés service
National audienceLes systèmes logiciels modernes se distinguent par un besoin d'évolution rapide et une complexité croissante, avec notamment l'apparition de nouveaux domaines d'applications, comme par exemple les logiciels destinés aux périphériques mobiles, c'est-à -dire les assistants mobiles tels que les téléphones ou encore les tablettes. Dans ces domaines, les utilisateurs réclament que les logiciels fournissent toujours plus de fonctionnalités. Ces logiciels ont alors besoin de prendre en compte ces nouvelles exigences demandées, tout en ayant conscience du nombre toujours croissant de périphériques hétérogènes
From a Domain Analysis to the Specification and Detection of Code and Design Smells
Code and design smells are recurring design problems in software systems that must be identified to avoid their possible negative consequences\ud
on development and maintenance. Consequently, several smell detection\ud
approaches and tools have been proposed in the literature. However,\ud
so far, they allow the detection of predefined smells but the detection\ud
of new smells or smells adapted to the context of the analysed systems\ud
is possible only by implementing new detection algorithms manually.\ud
Moreover, previous approaches do not explain the transition from\ud
specifications of smells to their detection. Finally, the validation\ud
of the existing approaches and tools has been limited on few proprietary\ud
systems and on a reduced number of smells. In this paper, we introduce\ud
an approach to automate the generation of detection algorithms from\ud
specifications written using a domain-specific language. This language\ud
is defined from a thorough domain analysis. It allows the specification\ud
of smells using high-level domain-related abstractions. It allows\ud
the adaptation of the specifications of smells to the context of\ud
the analysed systems.We specify 10 smells, generate automatically\ud
their detection algorithms using templates, and validate the algorithms\ud
in terms of precision and recall on Xerces v2.7.0 and GanttProject\ud
v1.10.2, two open-source object-oriented systems.We also compare\ud
the detection results with those of a previous approach, iPlasma
Déterminer l'impact d'une évolution dans les processus métiers
National audienceAvec l'augmentation de la taille et de la complexité des systèmes à bases de services, la tâche du concepteur dans l'évolution des processus métiers est devenue ardue. Une simple modification localisée du processus peut entrainer une dégradation des propriétés non fonc- tionnelles (temps de réponse, sécurité, taille des messages, etc.) de l'application toute entière. Pouvoir déterminer l'impact d'une évolution sur l'ensemble du système aiderait le concepteur à se rendre compte a priori des conséquences potentielles de l'évolution. Nous proposons de construire un canevas de conception et d'évolution à base de modèles pour aider le concepteur à déterminer l'effet d'une évolution sur le système en s'appuyant sur des analyses d'impact
Software Architecture Evolution
This chapter provides an overview, comparison and detailed treatment of the various state-of-the-art approaches to evolving software architectures. Furthermore, we discuss one particular framework for software architecture evolution in more detail
Towards Bridging the Gap Between Programming Languages and Partial Evaluation
International audiencePartial evaluation is a program-transformation technique that automatically specializes a program with respect to user-supplied invariants. Despite successful applications in areas such as graphics, operating systems, and software engineering, partial evaluators have yet to achieve widespread use. One reason is the difficulty of adequately describing specialization opportunities. Indeed, under-specialization or over-specialization often occurs, without any direct feedback to the user as to the source of the problem. We have developed a high-level, module-based language allowing the programmer to guide the choice of both the code to specialize and the invariants to exploit during the specialization process. To ease the use of partial evaluation, the syntax of this language is similar to the declaration syntax of the target language of the partial evaluator. To provide feedback to the programmer, declarations are checked throughout the analyses performed by partial evaluation. The language has been successfully used by a signal-processing expert in the design of a specializable Forward Error Correction component
Tutorial on Online Partial Evaluation
This paper is a short tutorial introduction to online partial evaluation. We
show how to write a simple online partial evaluator for a simple, pure,
first-order, functional programming language. In particular, we show that the
partial evaluator can be derived as a variation on a compositionally defined
interpreter. We demonstrate the use of the resulting partial evaluator for
program optimization in the context of model-driven development.Comment: In Proceedings DSL 2011, arXiv:1109.032
Towards Bridging the Gap Between Programming Languages and Partial Evaluation
Partial evaluation is a program-transformation technique that automatically specializes a program with respect to user-supplied invariants. Despite successful applications in areas such as graphics, operating systems, and software engineering, partial evaluators have yet to achieve widespread use. One reason is the difficulty of adequately describing specialization opportunities. Indeed, under-specialization or over-specialization often occurs, without any direct feedback to the user as to the source of the problem. We have developed a high-level, module-based language allowing the programmer to guide the choice of both the code to specialize and the invariants to exploit during the specialization process. To ease the use of partial evaluation, the syntax of this language is similar to the declaration syntax of the target language of the partial evaluator. To provide feedback to the programmer, declarations are checked throughout the analyses performed by partial evaluation. The language has been successfully used by a signal-processing expert in the design of a specializable Forward Error Correction component. 1
Approche déclarative à la spécialisation de programmes C
RENNES1-BU Sciences Philo (352382102) / SudocSudocFranceF
- …